sonarqube安装c++插件并检测c++代码 您所在的位置:网站首页 gitlab hooks 代码扫描 sonarqube安装c++插件并检测c++代码

sonarqube安装c++插件并检测c++代码

2023-09-17 23:15| 来源: 网络整理| 查看: 265

系列文章目录

一 ubuntu20.04 搭建SonarQube服务器&&sonar-scanner

二 sonarqube安装c++插件并检测c++代码

三 sonarqube安装gitlab插件集成gitlab-ci

文章目录 系列文章目录前言一、cxx-plugin及其下载安装1.相关介绍2.下载安装 二、扫描c++代码1.项目配置2.扫描并上传扫描结果 总结

前言

前面我们搭建了sonarqube服务器以及sonar-scanner,为了能够检测c++代码,需要安装插件sonar-cxx-plugin。

一、cxx-plugin及其下载安装 1.相关介绍

(以下基本上翻译,英语好的同学可以去github上阅读) (源码地址:https://github.com/SonarOpenCommunity/sonar-cxx 访问不了的话可以用这个镜像网站:https://github.com.cnpmjs.org/SonarOpenCommunity/sonar-cxx这个c++插件整合了一些现有的c++代码检测工具,使得社区版的sonarqube能够支持对c++的检测。)

主要特性:

语法分析器支持:

C++03, C++11, C++14,C++17, C++20 C89, C99, C11, C17

编译器特定扩展(compiler specific extensions):

Microsoft extensions: C++/CLI, Attributed ATL GNU extensions CUDA extensions

运行时环境:

Microsoft Windows Linux

cxx-plugin能集成的静态和动态分析工具包括:

Cppcheck warnings support (http://cppcheck.sourceforge.net/) GCC/G++ warnings support (https://gcc.gnu.org/) Visual Studio and Core Guideline Checker warnings support (https://www.visualstudio.com/) Clang Static Analyzer support (https://clang-analyzer.llvm.org/) Clang-Tidy warnings support (http://clang.llvm.org/extra/clang-tidy/) Infer warnings support (https://fbinfer.com/) PC-Lint warnings support (http://www.gimpel.com/) RATS (https://github.com/andrew-d/rough-auditing-tool-for-security) Valgrind (http://valgrind.org/) Vera++ (https://bitbucket.org/verateam/vera/wiki/Home) Dr. Memory warnings support (http://drmemory.org/) (注意,cxx-plugin本身并不包含上面的工具,它只能阅读并集成这些工具所产生的分析报告,我们必须自己调用这些工具来生成报告。然后在配置文件sonar-project.properties(后面介绍)里面写上报告所在的路径,如:sonar.cxx.cppcheck.reportPath=) 在这里插入图片描述

2.下载安装

在上面的github地址https://github.com/SonarOpenCommunity/sonar-cxx 根据这个表选择对应的版本: 在这里插入图片描述 我们前面安装的sonarqube版本是6.7,在这里https://github.com/SonarOpenCommunity/sonar-cxx/releases找到对应的release下载,然后把sonar-cxx-plugin-x.y.z.jar放到/opt/sonarqube/extensions/plugins里。然后重启sonarqube服务器: (别忘了ubuntu切换到sonar用户su sonar )

/opt/sonarqube/linux-x86-64/sonar.sh restart

访问sonarqube服务器:http://localhost:9000 可以看到 在这里插入图片描述 证明安装成功。

二、扫描c++代码 1.项目配置

进入你要扫描的项目的根目录,创建一个叫sonar-project.properties的文件。这是用来配置sonar项目的文件。在这里我们配置如下:

sonar.projectKey=test sonar.projectName=test sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.language=c++ sonar.sources=. #files to be handled by the cxx plugin sonar.cxx.file.suffixes=.cxx,.cpp,.cc,.c,.hxx,.hh,.handled #include path sonar.cxx.includeDirectories=/usr/include,/usr/include/c++/9

这里的sonar.projectName和sonar.projectName对应我们在sonarqube服务器上的项目Name和Key; sonar.language是我们要扫描的语言,这里是c++; sonar.cxx.file.suffixes表示我们为扫描的文件的后缀(即我们认为这些后缀的文件是c++代码文件),用逗号隔开; sonar.cxx.includeDirectories是包含文件的路径,这里我们仅包含了c/c++标准库的路径,如果要包含自己创建的文件,还要添加其他路径,后面我们会用shell脚本自动生成这一项,来包含我们根目录下的所有路径; sonar.sources表示我们要扫描的代码文件所在的路径; 此外,还有一些常用的配置项: sonar.exclusions表示不需要扫描的路径,我们可以把我们不希望扫描的代码所在的目录写在这里; sonar.cxx.cppcheck.reportPath、sonar.gcc.reportPath等,表示其他代码检测软件生成的报告路径,sonar可以读取这些报告并整合它们。(具体见github上的文档)

2.扫描并上传扫描结果

在项目的根目录执行命令

sonar-scanner

看到类似下面的输出

INFO: Task total time: 30.657 s INFO: ------------------------------------------------------------------------ INFO: EXECUTION SUCCESS INFO: ------------------------------------------------------------------------ INFO: Total time: 32.513s INFO: Final Memory: 12M/47M INFO: ------------------------------------------------------------------------

用浏览器访问sonarqube服务器,http://localhost:9000,登录,用户名admin,密码admin,可以看到名为test的工程(如下图所示),证明成功扫描并上传检测报告。 在这里插入图片描述

总结

至此,使用sonar-scanner扫描c++代码并将检测结果上传至sonarqube服务器的流程就跑通了。 在后面的文章里我们将介绍如何利用gitlab-plugin这一插件将gitlab-ci与sonarqube相结合。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有